excel-合并多个Excel文件--VBA合并当前目录下所有Excel工作簿中的所有工作表

在网上找EXCEL多文件合并的方法,思路:

一、Linux 或者window+cmder,直接用命令行cat合并EXCEL文件,但是,需要安装辅助东西才能直接处理(也许也不可以,但是,可以用文件格式转换工具转换是可行的,把EXCEL文件转换成txt文件,再操作,操作好了,再转换成EXCEL格式);还有一种是perl或者Python有自己自带的EXCEL处理包,能像处理数组一样,实现直接处理EXCEL文件的目的

二、EXCEL自带VBA编程实现合并,但是,网上搜了很多,格式很类似的VBA脚本,都不能很完美的实现合并功能,都或多或少合并有不完整的现象,于是遇到下面的这个版本,可以很好正确的实现合并,就在此把脚本里边每条的功能给详细注释一下,如有不正确的地方,欢迎留言,感激不尽~

脚本:

Sub 合并目录所有工作簿全部工作表()  

Dim MP, MN, AW, Wbn, wn               #定义变量(MP=MyPath,MN=MyName,AW=ActiveWorkbookName,Wbn=WorkBookName,wn=workbooksheet(i)name),但未指定变量类型,这样不是很规范

Dim Wb As Workbook                        #定义变量Wb为工作簿类型   #Dim Wbn As string,G As Long  #定义变量Wbn为字符型,G为长整型 #Dim Num,ini As Long #定义Num未声明类型,定义并声明ini为长整型

Dim i, a, b, d, c, e                               #定义变量,但未指定变量类型,这样不是很规范

Application.ScreenUpdating = False  #关闭屏幕刷新

MP = ActiveWorkbook.Path               #将当前工作簿(活动工作簿)的路径赋值给MP

MN = Dir(MP & "\" & "*.xls")               #将当前工作簿(活动工作簿)的路径加上\*.xls后缀,从而捕获到的*位置的所有文件名的值,Dir 会返回匹配 pathname 的第一个文件名。若想得到其它匹配 pathname 的文件名,再一次调用 Dir,且不要使用参数。如果已没有合乎条件的文件,则 Dir 会返回一个零长度字符串 ("")。一旦返回值为零长度字符串,并要再次调用 Dir 时,就必须指定 pathname,否则会产生错误。

AW = ActiveWorkbook.Name            #将当前工作簿(活动工作簿)的名字赋值给AW(不带后缀,只是名字)

Num = 0     #Num=0

e = 1           #ini=0

Do While MN <> ""                           #运行下面的DO while 循环,直到MN值为空值

  If MN <> AW Then                    #如果,MN值不等于AW值,就运行IF到END IF之间的判断语句

    Set Wb = Workbooks.Open(MP & "\" & MN)                #打开MP\路径下名为MN变量值的工作簿,并引用(Set的作用)赋给Wb  ##引用赋值如果,对Wb更改了,被引用的也随着更改了,详细见下边PS(3)

    a = a + 1                                                      #对a进行循环累加

    With Workbooks(1).ActiveSheet                                   #对已打开的所有工作簿中的第一个工作簿中的被激活的工作表运用with语句  

      For i = 1 To Sheets.Count                    #在Workbooks(1).ActiveSheet的所有sheet中循环

        If Sheets(i).Range("a1") <> "" Then                #如果Wb工作簿的第i个工作表的A1单元格内容不为空,就进行IF判断内容,如果为空,跳过IF判断进入For的下一个循环

          Wb.Sheets(i).Range("a1").Resize(1, Sheets(i).UsedRange.Columns.Count).Copy  .Cells(1, 1)  #将wb

  • 6
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值